package com.cn.springcloudwechat.service.find.askDoctor;

import com.cn.springcloudwechat.model.YmUser;
import com.cn.springcloudwechat.model.find.askDoctor.YmDoctor;
import com.cn.springcloudwechat.model.find.askDoctor.YmDoctorLevel;
import com.cn.springcloudwechat.model.find.askDoctor.YmDoctorWork;
import com.cn.springcloudwechat.model.find.askDoctor.YmDouctorConsultType;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
/**
 * 问医生- Service层
 *
 */
public interface AskDoctorService {
    /**
     * 问医生-配置医生信息
     * @param ymdoctor(医生基本信息),ymDoctorWork(医生上班时间)
     * @return
     */
    public Integer insertYmDoctor(Long userId, YmDoctor ymdoctor);

    /**
     * 问医生-查询医生等级
     * @param
     * @return List<YmDoctorLevel>
     */
    public List<YmDoctorLevel> queryYmDoctorLevel();

    /**
     * 问医生-咨询类型查询
     * @param
     * @return List<YmDoctorLevel>
     */
    public List<YmDouctorConsultType> queryYmDouctorConsultType();

    /**
     * 问医生-修改医生信息
     * @param userId, YmDoctor ymDoctor
     * @return Integer
     */
    public Integer updateYmDouctorInfo(Long userId,YmDoctor ymDoctor);

    /*
     * 根据userId查询医生详细信息
     * */
    @RequestMapping("queryDoctorInfo")
    public YmDoctor queryDoctorInfoByUserId(Long userId);

    /*
     * 根据userId查询医生详细信息
     * */
    @RequestMapping("queryDoctorInfo")
    public YmDoctor queryDoctorInfoByDoctorId(Long doctorId);
    /**
     * 问医生-问医生主页展示信息查询(平台推荐医生)
     * @param
     * @return List<YmDoctor>
     */
    public List<YmDoctor> queryYmDoctorOrderByQuota();

    /**
     * 问医生-问医生主页展示信息查询(根据登录用户所属区域查询推荐医生)
     * @param
     * @return List<YmDoctor>
     */
    public List<YmDoctor> queryYmDoctorOrderByStationId(Long cityAreaId);

    /**
     * 问医生-问医生主页展示信息查询(查询所有医生，并先按区域排序，再按咨询类型排序)
     * @param
     * @return List<YmDoctor>
     */
    public List<YmDoctor> queryAllYmDoctor();

    /**
     * 问医生-快速提问-根据咨询类型和在线状态查询医生
     * @param
     * @return List<Long>
     */
    List<Long> queryYmDoctorByDouctorConsultTypeId(Long douctorConsultTypeId);

    /**
     * 问医生-查询未配置上班时间的所有医生
     * @param
     * @return
     */
    public List<YmDoctor> queryAllDoctorByWorkDate();

    /**
     * 问医生- 定时任务，每日可提问数重置
     * @param
     * @return
     */
    public Integer updateTotalQuota();
}
